$(function() {
	// 加载数据字典管理菜单
	loadDictionar();
	init();
	// 监听#tree下的li的点击事件
	$("#tree").on("click", "li", loadNote);
});
// 页面初始化调用方法
function init() {
	// 1.初始化Table
	var roleTable = new TableInit();
	roleTable.Init();
}
/**
 * 加载数据字典菜单
 */
function loadDictionar() {
	$.ajax({
		"url" : "../../../dictionar/getDictionarList",
		"type" : "post",
		"data" : {},
		"dataType" : "json",
		"success" : function(data) {
			if (data.flag == 0) {
				var result = data.content;
				for (var i = 0; i < result.length; i++) {
					var name = result[i].name;
					var code = result[i].code;
					createDictionarLi(name, code);
				}
			} else  {
				warning(data.errorInfo);
			}
		},
		"error" : function() {
			warning("服务器加载异常!");
		}
	});
}
/**
 * 拼接数据字典管理信息
 * 
 * @param name//字典名称
 * @param code//字典类别
 */
function createDictionarLi(name, code) {
	var sli = '<li value="';
	sli += code;
	sli += '">';
	sli += name;
	sli += '</li>';
	var $li = $(sli);
	$("#tree").append($li);
}
/**
 * 加载当前选中管理类别的子集
 */
function loadNote() {
	$("#divp").html("");
	$("#caseTables").html("");
	$("#divp").html($(this).html() + "名称:");
	$('#dictdataNameSearch').val("");
	// 清除选中效果
	$("#tree li").removeClass();
	// 设置选中效果
	$(this).addClass("blue");
	queryBytableId('dictionarTables');
}

/**
 * 表格初始化
 */
var TableInit = function() {
	var oTableInit = new Object();
	// 初始化Table
	oTableInit.Init = function() {
		$('#dictionarTables').bootstrapTable({
			url : '../../../dictdata/getDictdataName', // 请求后台的URL（*）
			method : "POST",
			contentType : "application/x-www-form-urlencoded",
			toolbar : '#toolbar',
			striped : true, // 是否显示行间隔色
			cache : false, // 是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
			pagination : true, // 是否显示分页（*）
			sortable : true, // 是否启用排序
			checkboxHeader : false,// 是否显示表头的全选
			queryParamsType : "undefined", // 默认limit
			queryParams : oTableInit.queryParams,// 传递参数（*）
			sidePagination : "server", // 分页方式：client客户端分页，server服务端分页（*）
			pageNumber : 1, // 初始化加载第一页，默认第一页
			pageSize : 10, // 每页的记录行数（*）
			pageList : [ 10, 25, 50, 100 ], // 可供选择的每页的行数（*）
			sortName : "DISPLAY_ORDER",
			sortOrder : "ASC",
			search : false, // 是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
			strictSearch : true,
			showColumns : true, // 是否显示所有的列
			minimumCountColumns : 2, // 最少允许的列数
			clickToSelect : true, // 是否启用点击选中行
			height : 500,// 行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
			uniqueId : "id", // 每一行的唯一标识，一般为主键列
			showToggle : true, // 是否显示详细视图和列表视图的切换按钮
			cardView : false, // 是否显示详细视图
			detailView : false,
			singleSelect:true,
			onLoadSuccess:function(){
	            $('.bootstrap-table tr td').each(function () {
	                $(this).attr("title", $(this).text());
	                $(this).css("cursor", 'pointer');
	            });
	        },
			responseHandler : function(res) {
				return getTableData(res);
			}, 
			columns : [ {
				checkbox : true
			}, {
				field : 'displayOrder',
				title : '排序',
				sortable : true,// 是否可排序
				order : "ASC"// 默认排序方式
			}, {
				field : 'dictdataName',
				title : '名称',
			}, {
				field : 'dictdataCode',
				title : '编码'
			}, {
				field : 'dictValue',
				title : '类别'
			} ]
		});
	};

	// 得到查询的参数
	oTableInit.queryParams = function(params) {
		var temp = { // 这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的pageSize,
			// pageNumber, searchText, sortName, sortOrder
			pageSize : params.pageSize, // 页面大小
			pageNumber : params.pageNumber, // 页码
			sortName : "DISPLAY_ORDER",
			sortOrder : params.sortOrder,
			dictValue : $("#tree li.blue").attr("value"),
			dictdataName : $('#dictdataNameSearch').val()
		};
		return temp;
	};
	return oTableInit;
};

/**
 * 弹出新增类别页面操作
 */
function add() {
	var dictValue = $("#tree li.blue").attr("value");
	if (dictValue == null || dictValue == "") {
		var content = "请选择数据字典类别!";
		info(content);
	} else {
		BootstrapDialog.show({
			title : '新增类别',
			draggable: true,
			closable: false,
			message : $(
					"<form class='form-inline' style='height:100px'></form>")
					.load('dictionarAdd.html'),
			onshown : function() {
				// 初始化编辑框的值
				$("#dictdataNameAdd").val("");// 类别名称
				$("#dictdataCodeAdd").val("");// 类别编码
				$("#displayOrderAdd").val("");// 类别顺序
			},
			buttons : [
					{
						icon : 'glyphicon glyphicon-check',
						label : '确定',
						cssClass : 'btn-primary',
						autospin : true,
						action : function(dialogRef) {
							var dictdataName = $("#dictdataNameAdd").val();// 类别名称
							var dictdataCode = $("#dictdataCodeAdd").val();// 类别编码
							var displayOrder = $("#displayOrderAdd").val();// 类别顺序
							var ok = true;
							if (dictdataName == "" || dictdataCode == "") {
								ok = false;
								var content = "类别名称与类别编码均不能为空!";
								info(content);
							}
							if (ok) {
								dictdataAdd(dictdataName, dictdataCode,
										dictValue, displayOrder);
							}
						}
					}, {
						label : '取消',
						action : function(dialogRef) {
							dialogRef.close();
						}
					} ]
		});
	}
}
/**
 * 发送ajax添加新类别
 * 
 * @param dictdataName
 * @param dictdataCode
 * @param dictValue
 */
function dictdataAdd(dictdataName, dictdataCode, dictValue, displayOrder) {
	$.ajax({
		url : "../../../dictdata/addDictdata",
		type : "post",
		data : {
			"dictdataName" : dictdataName,
			"dictdataCode" : dictdataCode,
			"dictValue" : dictValue,
			"displayOrder" : displayOrder
		},
		dataType : "json",
		success : function(data) {
			if (data.flag == 0) {
				success("新增成功!");
				queryBytableId('dictionarTables');
			} else {
				danger(data.errorInfo);
			}
		},
		error : function() {
			danger("新增失败!");
		}
	});
}
/**
 * 弹出修改页面操作
 */
function edit() {
	var dictValue = $("#tree li.blue").attr("value");
	if (dictValue == null || dictValue == "") {
		var content = "请选择数据字典类别!";
		info(content);
	} else {
		var selectDictionar = $("#dictionarTables").bootstrapTable(
				'getSelections');
		if (selectDictionar.length == 0) {
			var content = "请选择要编辑的类别!";
			info(content);
		} else{
			var id = selectDictionar[0].id;
			var dictdataName1 = selectDictionar[0].dictdataName;
			var dictdataCode1 = selectDictionar[0].dictdataCode;
			var displayOrder1 = selectDictionar[0].displayOrder;
			BootstrapDialog
					.show({
						title : '编辑类别',
						message : $(
								"<form class='form-inline' style='height:100px'></form>")
								.load('dictionarEdit.html'),
						onshown : function() {
							// 初始化编辑框的值
							$("#dictId").val(id);
							$("#dictdataNameEdit").val(dictdataName1);// 类别名称
							$("#dictdataCodeEdit").val(dictdataCode1);// 类别编码
							$("#displayOrderEdit").val(displayOrder1);// 类别顺序
						},
						buttons : [
								{
									icon : 'glyphicon glyphicon-check',
									label : '确定',
									cssClass : 'btn-primary',
									autospin : true,
									action : function(dialogRef) {
										var dictdataName = $("#dictdataNameEdit").val();// 类别名称
										var dictdataCode = $("#dictdataCodeEdit").val();// 类别编码
										var displayOrder = $("#displayOrderEdit").val();// 类别顺序
										var ok = true;
										if (dictdataName == "") {
											ok = false;
											var content = "类别名称不能为空!";
											info(content);
										}
										if (ok) {
											if(dictdataName1==dictdataName){
												dictdataName=null;
											}
											dictdataEdit(id,dictdataName,
													dictdataCode, dictValue,
													displayOrder);
										}
									}
								}, {
									label : '取消',
									action : function(dialogRef) {
										dialogRef.close();
									}
								} ]
					});
		}
	}
}
/**
 * 发送ajax请求编辑类别
 * 
 * @param dictdataName
 * @param dictdataCode
 * @param dictValue
 */
function dictdataEdit(id,dictdataName, dictdataCode, dictValue, displayOrder) {
	$.ajax({
		url : "../../../dictdata/updateDictdataEdit",
		type : "post",
		data : {
			id:id,
			dictdataName : dictdataName,
			dictdataCode : dictdataCode,
			dictValue : dictValue,
			displayOrder : displayOrder
		},
		dataType : "json",
		success : function(data) {
			if (data.flag == 0) {
				success("修改成功!");
				queryBytableId('dictionarTables');
			} else {
				danger(data.errorInfo);
			}
		},
		error : function() {
			danger("修改失败!");
		}
	});
}